主键在表中的位置会影响性能吗 | 您所在的位置:网站首页 › 给表添加主键 sql › 主键在表中的位置会影响性能吗 |
主键可能会引起数据位置频繁变动,影响性能。主键将会添加到表上的所以其他索引中,因此会降低性能,影响插入速度。 因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其它系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突。特别是在新系统上线时,新旧系统并行存在,并且是异库异构的数据库的情况下,需要双向同步时,自增主键将是你的噩梦。 主键的数据类型选择。 关于主键的类型选择上最常见的争论是用整型还是字符型的问题,关于这个问题高性能MySQL一书中有明确论断,整数通常是标识列的最好选择,因为它很快且可以使用AUTOINCREAMENT,如果可能,应该避免使用字符串类型作为标识列,因为很消耗空间,且通常比数字类型慢。 索引就相当于对指定的列进行排序,排序有利于对该列的查询,可以大大增加查询效率,建立索引也是要消耗系统资源,所以索引会降低写操作的效率 主键,唯一,联合都属于索引 主键属于唯一索引,且一个表只能有一个主键,主键列不允许空值唯一索引可以一个表中可以有多个,而且允许为空,列中的值唯一 多个字段的多条件查询多使用联合索引。 主键是一个索引,mysql的索引是B+树,Mysql会按照键值的大小进行顺序存放,如果我们设置自增id为主键,这个时候主键是按照一种紧凑的接近顺序写入的方式进行存储数据。如果我们用其他字段作为主键的话,此时Mysql不得不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写到磁盘上而从缓存中清掉,此时又要从磁盘上读回来,这增加了很多额外的开销,同时频繁的移动、分页操作造成了大量的碎片。- 考虑性能消耗 - 考虑资源消耗 - 考虑分库分表 欢迎分享,转载请注明来源:内存溢出 原文地址:https://outofmemory.cn/zaji/5902451.html |
CopyRight 2018-2019 实验室设备网 版权所有 |